package com.yztctech.android11_06_progrssdialog;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

/**
 * 演示ProgressDialog=============》默认是圆圈
 * 备注:
 * 1. 最简单的progressDialog显示进度条
 * 2. ProgressDialog是AlertDialog的一个子类,其他子类还有TimePickerDialog,DatePickerDialog就这三个,不过没人使用系统自带的,一般都是设计师自己设计的ui,说实话,没有人家的好看(个人见解)
 */
public class MainActivity extends AppCompatActivity {

    private ProgressDialog downloadProgressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化ProgressDialog------》button控制显示
        initProgressDialog();

        findViewById(R.id.btn_show_progressdialog).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //创建ProgressDialog方式一 -----------》默认的也是可以的
                //ProgressDialog.show(MainActivity.this, "温馨提示", "资源下载中...", true, true).show();
                //方式二显示ProgressDialog自定义 样式使用系统的三个 圆圈、长条、类似圆圈的长条
                downloadProgressDialog.show();
                new DownloadTask().execute();//开启线程
            }
        });
    }

    private void initProgressDialog() {//代码设置----》为什么在哪里都是用上下文，上下文不就是一个activity 的对象么？他得知道或者绑定在哪一个activity显示，
        downloadProgressDialog = new ProgressDialog(this);
        downloadProgressDialog.setTitle("温馨提示...");
        downloadProgressDialog.setIcon(R.mipmap.ic_launcher);//R文件上哪了？？？
        downloadProgressDialog.setCancelable(true);// 设置是否可以通过点击Back键取消
        downloadProgressDialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条
        downloadProgressDialog.setMessage("资源下载中 ....");
        // 设置进度条样式  默认是圆圈
        downloadProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//圆圈
        downloadProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//进度条;可以重写

        // 分割线形式的进度条，此时无法修改进度 像水流那样其实就是样式和圆圈不一样，其他的和圆圈完全都一样
//        downloadProgressDialog.setIndeterminate(true);

        downloadProgressDialog.setMax(100);//最大进度一般设置100 百分之
        downloadProgressDialog.setProgress(20);//当前进度
    }

    class DownloadTask extends AsyncTask<Void, Integer, Void> {

        @Override
        protected Void doInBackground(Void... voids) {
            //设置ProgressDialog进度
            while (downloadProgressDialog.getProgress() < 100) {
                downloadProgressDialog.setProgress(downloadProgressDialog.getProgress() + 20);
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            return null;//内部类不用返回数据
        }
    }
}
